sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install -y ethereum


geth version


🗄️ 2. 创建创世区块（Genesis Block）

mkdir -p ~/ethereum-private
cd ~/ethereum-private
nano genesis.json


{
  "config": {
    "chainId": 2025,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0
  },
  "difficulty": "1",
  "gasLimit": "8000000",
  "alloc": {
    "0xYOUR_ACCOUNT_ADDRESS": {
      "balance": "1000000000000000000000000"
    }
  }
}


配置项	说明
chainId	网络的唯一标识符，防止交易重放
difficulty	挖矿难度，1 表示非常容易挖矿（适合开发）
gasLimit	每个区块的最大 Gas 消耗量
alloc	预先给指定账户分配初始余额（单位：wei）

🌱 3. 初始化创世区块
在 Geth 中初始化创世区块：
geth --datadir ./data init genesis.json

生成的文件路径：
data/geth/chaindata – 区块链数据
data/geth/nodes – 节点数据

 4. 创建账户
 在本地创建一个账户，用于签署交易：
 geth --datadir ./data account new

Your new account is locked with a password.
Please give a password. Do not forget this password.

Address: {0xabc123...}

账户创建后会生成密钥文件：

存储在 ./data/keystore/ 目录下

🚀 5. 启动本地测试网络
使用以下命令启动私有链：

geth --datadir ./data \
  --networkid 2025 \
  --http --http.addr "0.0.0.0" --http.port 8545 \
  --http.api "eth,web3,net,personal" \
  --mine --miner.threads 1 \
  --allow-insecure-unlock


--datadir	指定数据存储路径
--networkid	使用之前在 genesis.json 中定义的 chainId
--http	启用 HTTP 访问
--http.addr	允许从本地或远程访问
--http.port	设置 HTTP 访问端口
--http.api	允许通过 API 访问的模块
--mine	开启挖矿
--miner.threads	挖矿线程数
--allow-insecure-unlock	允许通过 HTTP 解锁账户（仅限开发）

6. 解锁账户（可选）
在 Geth 控制台中手动解锁账户（或通过 HTTP API 解锁）：
启动 Geth 控制台：
geth attach http://127.0.0.1:8545

解锁账户：
personal.unlockAccount("0xabc123...", "your-password", 600)

 7. 挖矿（可选）
 miner.start(1)  // 使用 1 个线程挖矿
 停止挖矿：
 miner.stop()

📡 8. 与 Geth 交互（通过 HTTP/IPC）
使用 go-ethereum 提供的 ethclient 或 curl 直接访问节点：

获取区块高度：
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8545

🌟 9. 测试交易
在 Geth 控制台中发送交易：
eth.sendTransaction({
  from: "0xabc123...",
  to: "0xdef456...",
  value: web3.toWei(1, "ether")
})



🔎 10. 查看链上状态
查看账户余额：
web3.fromWei(eth.getBalance("0xabc123..."), "ether")

查看最新区块信息：
eth.getBlock("latest")

查看交易池中的交易：
txpool.status

Geth 网络文件结构

data/
├── geth/
│   ├── chaindata/       # 区块链数据
│   ├── nodes/           # 节点数据
│   └── keystore/        # 账户私钥
├── genesis.json         # 创世区块配置

🎯 Geth 搭建成功后可以做什么？
✅ 部署智能合约
✅ 在本地网络中模拟主网环境
✅ 通过 go-ethereum 或 web3.js 进行交互
✅ 测试和优化智能合约逻辑


